3 if peek(56) <> 30 then poke 56,30 : clr   --> ($37-$38 = MEMSIZ) limit basic memory to $1e00

5 if a = 0 then a = 1 :             load "sprites",8,1
6 if a = 1 then a = 2 : sys 16361 : load "hicode",8,1         ==> $3fe9 Sprites:SpriteDataCopy
7 if a = 2 then a = 3 :             load "locode",8,1
10 gosub 900    --> get top ten
10 for i = 1 to 10
10  c0(i) = 1 
10 next

20 n$(0) = "one player game"
20 n$(1) = "two player game"

30 m$(1) = "skill one"
30 m$(2) = "skill two"
30 m$(3) = "skill three"
30 m$(4) = "skill four"

32 poke 53280,9  --> ($d020)
34 sys 25992     --> ==> $6580 HIcode:ShowStartScreen
35 gosub 400     --> init clock
35 poke 53281,1  --> ($d021)
35 print"{clear}"

40 for i = 1 to 200 : next : print" {red}{175*38}"
50 print" {reverse on}{space*6}please select skill level{space*7}"
60 print" {black}{183*38}"
70 for j = 0 to 1
70  print tab(12) "{blue}" n$(j)
70  print tab(12) "{black}{163*15}"
80  for k = 1 to 4
80    print tab(11) j * 4 + k "= " m$(k)
80    print
80  next
80 next
85 if peek(56585) >= 48 then poke 38487,1 : l$ = "1"   --> ($dd09 = TOD seconds) --> ($9657) TabGameMode=demo
85 gosub 400        --> init clock
85 goto110

90 get l$
90 if l$ = "" then print "{home}{down*2} {red}{reverse on}{space*31}{home}"
90 goto 40

94 gosub 400        --> init clock
98 if l$ = "t" then s(0) = 0                            --> show top ten

98 s(1) = 0
98 poke53281,0      --> ($d021)
98 print"{clear}"
98 gosub 575        --> save?
98 goto 35

100 if l$ < "1" or l$ > "8" then 90

105 poke 38487,0    --> ($9657) TabGameMode=game
110 l = val(l$)
110 if l > 4 then 200

120 poke 38400,l    --> ($9600) skill
120 poke 38401,1    --> ($9601) players
120 goto 205

200 poke 38400,l-4  --> ($9600) skill
200 poke 38401,2    --> ($9601) players

205 print"{clear}"
210 sys 13255       ==> $1e1c LOcode:GameStart

212 print "{clear}"
215 s = 54272       --> ($d400) SID
215 for i = 0 to 20
215   poke s + i,0
215 next

216 rt = peek(38408)            --> ($9608) TabPlayerShowScores
216 if peek(38487) = 0 then 218 --> ($9657) TabGameMode = game

217 s(0) = 0
217 s(1) = 0
217 poke 53281,0    --> ($d021)
217 print"{clear}"
217 gosub 1300      --> display scores

217 for i = 1 to 10000
217 next
217 goto 219

218 if rt <> 2 then gosub 500

219 gosub 400       --> init clock
219 goto 34

400 for i = 11 to 8 step - 1
400   poke 56576 + i,0    --> ($dd08-$dd0b) - TOD cia2
400 next
400 return

450 open 1,8,15
450 close 1
450 return

500 poke 53281,0    --> ($d021)
500 print"{clear}"
500 gosub 800
520 gosub 1100
530 for ii = 0 to 1
530   x = p(ii)
540   gosub 1300    --> display scores
550   if x then
550     gosub 700   --> txt: enter initials
550     gosub 1500
560   c0(x) = 12
570 next

575 for i = 1 to 10
575   c0(i) = 1
575 next
580 print"{clear}"
580 gosub 1300
590 print : print tab(7) "do you wish to record this"
600 print tab(5) "top ten list on the disk (y/n)"
610 for i = 1 to 5000
610   get a$
610   if a$ = "" then next
610 return

630 if a$ = "y" then gosub 1700
630 return

640 if a$ <> "n" then 610
650 return

700 print : print tab(6) "{white}enter your initials player";ii+1
720 print : print tab(8) "move stick left or right"
730 print tab(10) "push button to enter"
740 return

800 for i = 0 to 1
820   sl% = peek(38731 + i) --> ($974b) TabPlayerScoreLoSav
820   sh% = peek(38746 + i) --> ($975a) TabPlayerScoreHiSav
830   s1% = sl% / 16
830   s1% = sl% - 6 * s1%
840   s2% = sh% / 16
840   s2% = sh% - 6 * s2%
850   s(i) = s2% * 10000 + s1% * 100
860 next
870 return

900 open2,8,2,"0:topten,s,r"
920 input#2,m$ : input#2,n$ : m$ = m$ + n$ : c=1
930 gosub 1800 --> disk operation check
930 close2
940 for i =1 to 10
950 i$ = "" : for j = 1 to 3 : i$ = i$ + mid$(m$,c,1) : c = c+1 : next
960 i$(i) = i$
970 n$=""
980 x$ = mid$(m$,c,1) : c = c + 1 : if x$ = "/" then 1000
990 n$ = n$ + x$ : goto980
1000 tt(i) = val(n$)
1010 next i
1020 x = fre(0)
1030 return

1100 for i = 1 to 10
1100  c0(i) = 7
1100 next
1120 for i = 0 to 1
1120  p(i) = 0
1130  if s(i) <= tt(10)   then 1200
1140  p = 10
1150  if  s(i) <= tt(p-1) then 1170
1160  p = p - 1
1160  if p > 1  then 1150
1170  if p = 10 then 1190
1180  for j = 10 to p + 1 step - 1
1180    tt(j) = tt(j-1)
1180    c0(j) = c0(j-1)
1180    i$(j) = i$(j-1)
1180  next
1190  tt(p) = s(i)
1190  c0(p) = 1
1190  p(i) = p
1190  i$(p) = "..."
1200 next
1202 if p(0) = 0    then return
1204 if s(0)>= s(1) then return
1206 p(0) = p(0) + 1
1206 if p(0) > 10 then p(0) = 0
1210 return

1300 rem   sub to display scores
1310 print"{home}"
1320 print tab(17) "{white}scores"
1330 print tab(4) "{cyan}player 1" tab(17) "{yellow}{163*6}" tab(28) "{cyan}player 2"
1340 print tab(4) "{orange}{163*8}" tab(28) "{163*8}{white}"

1350 for i = 0 to 1
1350  print tab(24 * i + 11 - len(str$(s(i)))) ; s(i) ;
1350 next
1350 print
1360 print tab(13) "{yellow}{164}{175}{185*10}{175}{164}"
1370 print tab(11) "{red}{195*4}{yellow}{reverse on} {cyan}top  ten{yellow} {red}{reverse off}{195*4}"
1380 print tab(13) "{yellow}{163}{183*12}{163}{white}"
1390 for i = 1 to 10
1390  poke 646,c0(i)  --> ($0286)
1400  print tab(11-int(i / 10)) ; i ; tab(16) ; i$(i) ; tab(29 - len(str$(tt(i)))) ; tt(i)
1410 next
1420 return

1500 as = 1320 + x * 40       --> ($0528)
1500 ac = as - 1024 + 55296   --> ($0400 + $d800)
1500 i$ = ""
1520 for i = 0 to 2
1530  for j = 0 to 2
1530    poke ac + j,15
1530  next
1540  poke ac + i,1
1540  k = 46                  --> ($2e)
1550  for l = 1 to 200
1560    poke as + i,k + 128   --> ($ae)
1560    for h = 1 to 50 : next
1570    n% = (256 + not peek(56320)) and 31 --> ($dc00)
1580    if n% and 16 then 1640
1590    if n% and 4 then
1590      k = k - 1
1590      l = 1
1590      if k = 45 then k = 26
1600    if n% and 8 then
1600      k = k + 1
1600      l = 1
1600      if k = 27 then k = 46
1610    if k < 1 then k = 46
1620    if k > 46 then k = 1
1630  next l
1635  return
1640  if k = 46 then
1640    i$ = i$ + chr$(k)
1640    goto 1660
1650  i$ = i$ +chr$(64 + k)
1660  for h = 1 to 500 : next
1660 next i
1670 i$(x) = i$
1670 return

1700 gosub 450  --> check disk
1700 if st then return

1710 m$ = ""
1710 n$ = ""
1720 for i = 1 to 5
1720  m$ = m$ + i$(i) + str$(tt(i)) + "/"
1720 next
1725 for i = 6 to 10
1725  n$ = n$ + i$(i) + str$(tt(i)) + "/"
1725 next

1730 open 15,8,15,"s0:topten" : close15
1740 open 2,8,2,"0:topten,s,w"
1750 print #2,m$
1750 print #2,n$
1750 gosub 1800 --> disk operation check
1750 close 2
1760 return

1800 open 15,8,15
1820 input #15,a$,b$,c$,d$
1820 close 15

1830 if val(a$) = 0 then return

1840 print"{clear}{down*4}no." tab(5) "message" tab(24) "track" tab(30) "sector"
1850 print a$ tab(5) b$ tab(26) c$ tab(32) d$ : print : print
1860 print "unable to perform disk operation"
1870 print : print "hit <return> to continue"
1880 for i = 1 to 10000
1880  get a$
1880  if a$ <> "" then return
1890 next
1900 return
